package com.tanhua.server.utils;



import com.tanhua.domain.mongo.Friend;
import com.tanhua.dubbo.api.mongo.FriendApi;
import org.apache.dubbo.config.annotation.Reference;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.*;

/**
 * 随机人数工具类
 */
@Component
public class ShuffleUtils {

    @Reference
    private FriendApi friendApi;

    /**
     * 随机遍历用户id
     * @return
     */
    public  List<Long> shuffle(Long userId){
        //创建一个集合来存储用户id
        List<Long> index = new ArrayList<>();
        //创建一个set集合，利用它的不重复特效
        Set<Long> set = new HashSet();
        //创建一个随机数对象
        Random random =new Random();

        //调用api查询用户的好友
        List<Friend> friends = friendApi.queryUserFriend(userId);

        //遍历添加用户
        while (true) {
            //随机
            long l = random.nextInt(100) + 1;
            //判断是否会随机到登录用户
            if(l == userId){
                continue;
            }
            //遍历用户的好友
            for (Friend friend : friends) {
                //判断是否会随机到用户好友
                if(l == friend.getFriendId()){
                    continue;
                }
            }

            //添加
            set.add(l);
            //判断是否够十个用户id
            if(set.size()>=10){
                break;
            }
        }
        //循环添加进list集合里
        for (Long o : set) {
            index.add(o);
        }
        System.out.println("随机前："+index);
        //随机
        Collections.shuffle(index);
        System.out.println("随机后："+index);
        //返回
        return index;
    }
}
